home *** CD-ROM | disk | FTP | other *** search
/ Programming in Microsoft Windows with C# / Programacion en Microsoft Windows con C#.iso / Codigo / Pinceles y lápices / HexagonGradientBrush / HexagonGradientBrush.cs next >
Encoding:
Text File  |  2002-05-14  |  2.1 KB  |  59 lines

  1. //---------------------------------------------------
  2. // HexagonGradientBrush.cs ⌐ 2001 by Charles Petzold
  3. //---------------------------------------------------
  4. using System;
  5. using System.Drawing;
  6. using System.Drawing.Drawing2D;
  7. using System.Windows.Forms;
  8.  
  9. class HexagonGradientBrush: PrintableForm
  10. {
  11.      const float fSide = 50;       // Lado (tambiΘn radio) del hexßgono
  12.  
  13.      public new static void Main()
  14.      {
  15.           Application.Run(new HexagonGradientBrush());
  16.      }
  17.      public HexagonGradientBrush()
  18.      {
  19.           Text = "Pincel gradiente en hexßgono";
  20.      }
  21.      protected override void DoPage(Graphics grfx, Color clr, int cx, int cy)
  22.      {
  23.                // Calcular la mitad de la altura del hexßgono.
  24.  
  25.           float fHalf = fSide * (float) Math.Sin(Math.PI / 3); 
  26.           
  27.                // Definir un hexßgono incluyendo un ancho extra.
  28.  
  29.           PointF[] aptf = {new PointF( fSide,         0),           
  30.                            new PointF( fSide * 1.5f,  0),
  31.                            new PointF( fSide,         0),           
  32.                            new PointF( fSide / 2,    -fHalf),
  33.                            new PointF(-fSide / 2,    -fHalf),
  34.                            new PointF(-fSide,         0),
  35.                            new PointF(-fSide * 1.5f,  0), 
  36.                            new PointF(-fSide,         0),
  37.                            new PointF(-fSide / 2,     fHalf),     
  38.                            new PointF( fSide / 2,     fHalf) };
  39.  
  40.                // Crear el primer pincel.
  41.  
  42.           PathGradientBrush pgbrush1 =
  43.                               new PathGradientBrush(aptf, WrapMode.Tile);
  44.  
  45.                // Desplazar el hexßgono y definir el segundo pincel.
  46.  
  47.           for (int i = 0; i < aptf.Length; i++)
  48.           {
  49.                aptf[i].X += fSide * 1.5f;
  50.                aptf[i].Y += fHalf;
  51.           }
  52.           PathGradientBrush pgbrush2 = 
  53.                               new PathGradientBrush(aptf, WrapMode.Tile);
  54.  
  55.           grfx.FillRectangle(pgbrush1, 0, 0, cx, cy);
  56.           grfx.FillRectangle(pgbrush2, 0, 0, cx, cy);
  57.      }
  58. }
  59.